package Day20;

public class Day20_M {
    public static void main(String[] args) {
        //面试题
        //泛型的上界限定符 <? extends T> ?是具体参数 可以是T的任何一个子类或是T类
        //特点 不能写入 只能读
        //下限限定符 <? super T> ?为具体参数 可以是T的任一父类或是T类
        //特点 规定了泛型类型的下限 写入的元素为?或?的子类 可以向上转型为?或?的基类 读出的数据元素类型不确定
            //除非用Object接收

        //因此 上限限定符只适合读 下限限定符只适合写

        //泛型类型的擦除原则
        //1 所有的参数化容器都会被擦除成非参数化的 比如 List<E>或List<List<E>>等都会被擦除成List
        //2 所有的数组都会被擦除成非参数化的 比如 List<E>[] 都会被擦除成List[]
        //3 原始类的容器 都会被擦除成自身 如List -> List
        //4 原生类的 被擦除成自身 如String int等
        //5 所有约束参数 例如上下界通配符 都会被擦除成T
        //6 多个约束参数的 <? extends Object&E> -> Object

        //进行泛型类型擦除后 程序能在JDK1.5以下的版本正确执行吗 还有必要保存原来的泛型类型吗
        //答 可以 会保存--
    }
}
